package pe.edu.upc.dsd.whereeat.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;

import pe.edu.upc.dsd.whereeat.base.domain.BaseEntity;


/**
 * The persistent class for the plato database table.
 * 
 */


@Entity
@XmlRootElement
@Table(name="plato")
public class Plato extends BaseEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(unique=true, nullable=false)
	private int codigo;

	@Column(length=18)
	private String descripcion;

	@Column(length=18)
	private String estadoPlato;

    @Temporal( TemporalType.TIMESTAMP)
	private Date fechaPublicacion;

    @Temporal( TemporalType.TIMESTAMP)
	private Date fechaRegistro;

	@Column(length=30)
	private String nombrePlato;

	//bi-directional many-to-one association to Categoriaplato
	@ManyToOne(cascade={CascadeType.DETACH}, fetch=FetchType.LAZY)
	@JoinColumn(name="codigoCategoria")
	private Categoriaplato categoriaplato;

	//bi-directional many-to-one association to Restaurant
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="codigoRestaurant",nullable = false)
	private Restaurant restaurant;

    public Plato() {
    }

    public Plato(Restaurant restaurant,Categoriaplato categoriaplato,String nombrePlato,String descripcion,Date fechaPublicacion, Date fechaRegistro, String estado) {
    	this.restaurant = restaurant;
    	this.categoriaplato = categoriaplato;
    	this.nombrePlato = nombrePlato;
    	this.descripcion = descripcion;
    	this.fechaPublicacion = fechaPublicacion;
    	this.fechaRegistro = fechaRegistro;
    	this.estadoPlato = estado;
    }

    public Plato(int codigo) {
    	this.codigo = codigo;
    }
    
	public int getCodigo() {
		return this.codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getEstadoPlato() {
		return this.estadoPlato;
	}

	public void setEstadoPlato(String estadoPlato) {
		this.estadoPlato = estadoPlato;
	}

	public Date getFechaPublicacion() {
		return this.fechaPublicacion;
	}

	public void setFechaPublicacion(Date fechaPublicacion) {
		this.fechaPublicacion = fechaPublicacion;
	}

	public Date getFechaRegistro() {
		return this.fechaRegistro;
	}

	public void setFechaRegistro(Date fechaRegistro) {
		this.fechaRegistro = fechaRegistro;
	}

	public String getNombrePlato() {
		return this.nombrePlato;
	}

	public void setNombrePlato(String nombrePlato) {
		this.nombrePlato = nombrePlato;
	}

	public Categoriaplato getCategoriaplato() {
		return this.categoriaplato;
	}

	public void setCategoriaplato(Categoriaplato categoriaplato) {
		this.categoriaplato = categoriaplato;
	}
	
	public Restaurant getRestaurant() {
		return this.restaurant;
	}

	public void setRestaurant(Restaurant restaurant) {
		this.restaurant = restaurant;
	}
	
}